﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using BLL;
using Table_Dal;
namespace ApplicationLayer
{
    public partial class frmTaoDeThi : DevComponents.DotNetBar.OfficeForm
    {
        string user = "";
        public frmTaoDeThi()
        {
            
            InitializeComponent();
        }
        public frmTaoDeThi(string user)
        {
            
           this.user = user;
            InitializeComponent();
        }
        public void LoadSoLuongCauHoi()
        {
            lblTongSoCau.Text = "Số câu đã chọn: " + lvwCauHoiDaChon.Items.Count;
        }
        private void frmTaoDeThi_Load(object sender, EventArgs e)
        {
            lblTongSoCau.Text = "Số câu đã chọn: " + 0;
            load_cboMonHoc();
        }
        public void load_cboMonHoc()
        {
            MonHocBLL mhbll = new MonHocBLL();
            List<MonHocTbl> DSmh = new List<MonHocTbl>();
            DSmh = mhbll.LayTatCaMonHoc();
            int k = DSmh.Count;
            if (k == 0)
                return;
            cboMonHoc.DataSource = DSmh;
            cboMonHoc.DisplayMember = "TenMonHoc";
            cboMonHoc.ValueMember = "MaMonHoc";
            if (cboMonHoc.Items.Count > 0)
                cboMonHoc.SelectedIndex = 0;
        }
        public void load_cboChuong()
        {
            cboChuong.DataSource = null;
            if (cboMonHoc.Text == "")
                return;
            ChuongBll chg = new ChuongBll();
            List<ChuongTbl> DSchg = new List<ChuongTbl>();
            MonHocBLL mh = new MonHocBLL();
            DSchg = chg.DSChuong_MaMon(cboMonHoc.SelectedValue.ToString());
            ChuongTbl chgAll = new ChuongTbl();
            chgAll.MaChuong = "";
            chgAll.TenChuong = "Tất cả";
            DSchg.Add(chgAll);
            cboChuong.DataSource = DSchg;
            cboChuong.DisplayMember = "TenChuong";
            cboChuong.ValueMember = "MaChuong";
            if (DSchg.Count > 0)
                cboChuong.SelectedIndex = 0;
           
        }

        private void cboMonHoc_SelectedIndexChanged(object sender, EventArgs e)
        {
            int count = lvwCauHoiDaChon.Items.Count;
            if (count > 0)
                if(MessageBox.Show("Danh sách câu hỏi trong đề thi sẽ mất. Bạn chắc chọn môn khác chứ ?","Thông báo",MessageBoxButtons.YesNo)==DialogResult.Yes)
                    for (int x = count - 1; x >= 0; x--)
                    {
                        lvwCauHoiDaChon.Items.RemoveAt(x);
                    }
                    load_cboChuong();
                    Load_listCauhoi();
                    txtFind.Text = "";
                    LoadSoLuongCauHoi();
        }

        private void cboChuong_SelectedIndexChanged(object sender, EventArgs e)
        {
            Load_listCauhoi();
        }
        public void Load_listCauhoi()
        {
            CauHoiBll ch = new CauHoiBll();
            int count = lvwCauHoi.Items.Count;
            if (count > 0)
                for (int x = count - 1; x >= 0; x--)
                {
                    lvwCauHoi.Items.RemoveAt(x);
                }
            if (cboChuong.Text == null || cboChuong.Text == "")
                return;
            List<CauHoiTbl> Dscauhoi = new List<CauHoiTbl>();
            Dscauhoi = ch.LayDanhSachCauHoi_MaChuong_DoKho_MaMon(((ChuongTbl)cboChuong.SelectedItem).MaChuong, cboDoKho.Text, ((MonHocTbl)cboMonHoc.SelectedItem).MaMonHoc);
            
            int Dem = Dscauhoi.Count;
            if (Dem == 0) return;
            for (int x = 0; x < Dem; x++)
            {
                int k=0;
                if (lvwCauHoiDaChon.Items.Count > 0)
                {
                    for (int i = 0; i < lvwCauHoiDaChon.Items.Count; i++)
                    {
                        string s = lvwCauHoiDaChon.Items[i].Text;
                        if (Dscauhoi[x].MaCauHoi.ToString() == s)
                        {
                            k = 1;
                            i = lvwCauHoiDaChon.Items.Count;
                        }
                    }
                }
                if (k == 0)
                {
                    ListViewItem lst = new ListViewItem();
                    lst.Text = Dscauhoi[x].MaCauHoi.ToString();
                    lst.SubItems.Add(Dscauhoi[x].NoiDung);
                    lvwCauHoi.Items.Add(lst);
                }
            }
        }

        private void cboDoKho_SelectedIndexChanged(object sender, EventArgs e)
        {
            Load_listCauhoi();

        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            if (numSoLuong.Value > 0&&cboChuong.Text=="")
            {
                MessageBox.Show("Bạn chưa chọn Chương", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (numSoLuong.Value == 0 && lvwCauHoi.SelectedItems.Count == 0&&lvwCauHoi.Items.Count>0)
            {
                MessageBox.Show("Bạn chưa chọn câu hỏi", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            List<string> dscauhoidachon = new List<string>();

            if (lvwCauHoiDaChon.Items.Count > 0)
            {
                for (int i = 0; i < lvwCauHoiDaChon.Items.Count; i++)
                {
                    dscauhoidachon.Add(lvwCauHoiDaChon.Items[i].Text);
                }
            }
            List<string> dscauhoi = new List<string>();
             if (lvwCauHoi.SelectedItems.Count > 0)
            {
                for (int i = 0; i < lvwCauHoi.SelectedItems.Count; i++)
                {
                    string s = lvwCauHoi.SelectedItems[i].Text;
                    dscauhoi.Add(s);
                }
            }
             CauHoiBll chbll = new CauHoiBll();
             List<CauHoiTbl> dscauhoichon = chbll.DanhsachCauHoiDaChon(dscauhoi, dscauhoidachon, int.Parse(numSoLuong.Value.ToString()), ((ChuongTbl)cboChuong.SelectedItem).MaChuong, cboDoKho.Text, ((MonHocTbl)cboMonHoc.SelectedItem).MaMonHoc);
             if (dscauhoichon.Count > 0)
             {
                 for (int i = 0; i < dscauhoichon.Count; i++)
                 {
                     ListViewItem lst = new ListViewItem();
                     lst.Text = dscauhoichon[i].MaCauHoi.ToString();
                     lst.SubItems.Add(dscauhoichon[i].NoiDung);
                     string dokhoo="";
                     if(dscauhoichon[i].DoKho==1){
                         dokhoo = "Rất dễ";
                     }
                     else if (dscauhoichon[i].DoKho == 2)
                     {
                         dokhoo = "Dễ";
                     }
                     else if (dscauhoichon[i].DoKho == 3)
                     {
                         dokhoo = "Vừa";
                     }
                     else if (dscauhoichon[i].DoKho == 4)
                     {
                         dokhoo = "Khó";
                     }
                     else
                     {
                         dokhoo = "Rất Khó";
                     }
                     lst.SubItems.Add(dokhoo);
                     lvwCauHoiDaChon.Items.Add(lst);
                 }
             }
             else
             {
                 MessageBox.Show("Hết câu hỏi để chọn", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
             numSoLuong.Value = 0;
             Load_listCauhoi();
             LoadSoLuongCauHoi();
             txtFind.Text = "";
        }

        private void lvwCauHoi_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void btnThemTatCa_Click(object sender, EventArgs e)
        {
            List<string> dscauhoidachon = new List<string>();

            if (lvwCauHoiDaChon.Items.Count > 0)
            {
                for (int i = 0; i < lvwCauHoiDaChon.Items.Count; i++)
                {
                    dscauhoidachon.Add(lvwCauHoiDaChon.Items[i].Text);
                }
            }
            List<string> dscauhoi = new List<string>();
            if (lvwCauHoi.Items.Count > 0)
            {
                for (int i = 0; i < lvwCauHoi.Items.Count; i++)
                {
                    string s = lvwCauHoi.Items[i].Text;
                    dscauhoi.Add(s);
                }
            }
            CauHoiBll chbll = new CauHoiBll();
            List<CauHoiTbl> dscauhoichon = chbll.DanhsachCauHoiDaChon(dscauhoi, dscauhoidachon, 0, cboChuong.Text, cboDoKho.Text, cboMonHoc.Text);
            if (dscauhoichon.Count > 0)
            {
                for (int i = 0; i < dscauhoichon.Count; i++)
                {
                    ListViewItem lst = new ListViewItem();
                    lst.Text = dscauhoichon[i].MaCauHoi.ToString();
                    lst.SubItems.Add(dscauhoichon[i].NoiDung);
                    string dokhoo = "";
                    if (dscauhoichon[i].DoKho == 1)
                    {
                        dokhoo = "Rất dễ";
                    }
                    else if (dscauhoichon[i].DoKho == 2)
                    {
                        dokhoo = "Dễ";
                    }
                    else if (dscauhoichon[i].DoKho == 3)
                    {
                        dokhoo = "Vừa";
                    }
                    else if (dscauhoichon[i].DoKho == 4)
                    {
                        dokhoo = "Khó";
                    }
                    else
                    {
                        dokhoo = "Rất Khó";
                    }
                    lst.SubItems.Add(dokhoo);
                    lvwCauHoiDaChon.Items.Add(lst);
                    
                }
            }
            else
            {
                MessageBox.Show("Hết câu hỏi để chọn", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            numSoLuong.Value = 0;
            Load_listCauhoi();
            LoadSoLuongCauHoi();
            txtFind.Text = "";
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (lvwCauHoiDaChon.SelectedItems.Count == 0 &&  lvwCauHoiDaChon.Items.Count>0)
            {
                MessageBox.Show("Chưa chọn câu hỏi để xóa", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (lvwCauHoiDaChon.SelectedItems.Count == 0 && lvwCauHoiDaChon.Items.Count == 0)
            {
                MessageBox.Show("Không có câu hỏi để xóa", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            foreach(ListViewItem i in lvwCauHoiDaChon.SelectedItems){
                lvwCauHoiDaChon.Items.Remove(i);
            }
            Load_listCauhoi();
            LoadSoLuongCauHoi();
        }

        private void btnXoaTatCa_Click(object sender, EventArgs e)
        {
            if (lvwCauHoiDaChon.SelectedItems.Count == 0 && lvwCauHoiDaChon.Items.Count == 0)
            {
                MessageBox.Show("Không có câu hỏi để xóa", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            foreach (ListViewItem i in lvwCauHoiDaChon.Items)
            {
                lvwCauHoiDaChon.Items.Remove(i);
            }
            Load_listCauhoi();
            LoadSoLuongCauHoi();
        }
        private void txtFind_TextChanged(object sender, EventArgs e)
        {
            List<string> dscauhoidachon = new List<string>();

            if (lvwCauHoiDaChon.Items.Count > 0)
            {
                for (int i = 0; i < lvwCauHoiDaChon.Items.Count; i++)
                {
                    dscauhoidachon.Add(lvwCauHoiDaChon.Items[i].Text);
                }
            }
            int count = lvwCauHoi.Items.Count;
            if (count > 0)
                for (int x = count - 1; x >= 0; x--)
                {
                    lvwCauHoi.Items.RemoveAt(x);
                }
            MonHocBLL mh = new MonHocBLL();
            CauHoiBll bll = new CauHoiBll();
            ChuongBll chg = new ChuongBll();
            List<CauHoiTbl> dscauhoi = new List<CauHoiTbl>();
            dscauhoi = bll.TimKiemCauhoi(txtFind.Text,dscauhoidachon,((MonHocTbl)cboMonHoc.SelectedItem).MaMonHoc ,cboDoKho.Text,((ChuongTbl)cboChuong.SelectedItem).MaChuong);
            foreach (CauHoiTbl ch in dscauhoi)
            {
                ListViewItem lst = new ListViewItem();
                lst.Text = ch.MaCauHoi.ToString();
                lst.SubItems.Add(ch.NoiDung);
                lvwCauHoi.Items.Add(lst);
            }
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            txtFind.Text = "";
        }

        private void numSoLuong_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar < '0' || e.KeyChar > '9')
            {
                e.Handled = true;
            }
        }

        private void cboChuong_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void cboMonHoc_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void cboDoKho_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void btnCreate_Click(object sender, EventArgs e)
        {
            if (txtTenDeThi.Text.Trim().Length == 0)
            {
                MessageBox.Show("Tên đề thi trống", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtTenDeThi.SelectAll();
                return;
            }
            if ((int)numCauHoi.Value == 0)
            {
                MessageBox.Show("Sổ câu hỏi phải lớn hơn 0", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                numCauHoi.Select();
                return;
            }
            if ((int)numThoiGian.Value == 0)
            {
                MessageBox.Show("Thời gian phải lớn hơn 0", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                numThoiGian.Select();
                return;
            }
            if (lvwCauHoiDaChon.Items.Count != int.Parse(numCauHoi.Value.ToString()))
            {
                MessageBox.Show("Số lượng câu hỏi chưa đúng", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            List<string> dscauhoi = new List<string>();
            for (int i = 0; i < lvwCauHoiDaChon.Items.Count; i++)
            {
                dscauhoi.Add(lvwCauHoiDaChon.Items[i].Text);
            }
            DeThiTbl dthi = new DeThiTbl();
            NguoiradeBll nrd = new NguoiradeBll();
            dthi.MANGUOIRADE= nrd.Manguoirade(this.user);
            dthi.TENDETHI = txtTenDeThi.Text;
            dthi.SOCAUHOI =int.Parse( numCauHoi.Text);
            dthi.NGAYTAODE = DateTime.Now;
            dthi.THOIGIAN = int.Parse( numThoiGian.Value.ToString());
            DethiBLL dt = new DethiBLL();
            dt.ThemDethi(dthi, dscauhoi);
            this.DialogResult = System.Windows.Forms.DialogResult.OK;
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
        }
    }
}